import dayjs from "dayjs";

export function debounce(method, wait, immediate) {
  let timeout;
  return function (...args) {
    if (timeout) clearTimeout(timeout);

    if (immediate) {
      //是否立即执行
      const callNow = !timeout;

      timeout = setTimeout(() => {
        timeout = null;
      }, wait);

      if (callNow) method.apply(this, args);
    } else {
      timeout = setTimeout(() => {
        method.apply(this, args);
      }, wait);
    }
  };
}

export function formatDateTime(
  time = undefined,
  format = "YYYY-MM-DD HH:mm:ss"
) {
  return dayjs(time).format(format);
}

export function formatDate(date = undefined, format = "YYYY-MM-DD") {
  return formatDateTime(date, format);
}

// * 前端导出, 传入文件内容和文件名称
export function downloadFile(content, fileName) {
  const aEle = document.createElement("a"); //创建下载链接
  aEle.download = fileName; //代表该资源即将下载而不是出现于浏览器中，建议值是为文件名
  aEle.style.display = "none"; //隐藏下载链接
  const blob = new Blob([content]); //创建文件对象，传入数组格式
  aEle.href = URL.createObjectURL(blob); //创建文件地址，
  document.body.appendChild(aEle); //需要将元素插入到页面中
  aEle.click(); //触发链接的默认点击行为打开链接
  document.body.removeChild(aEle); //清除创建的元素
}
